package ar.edu.utn.frsf.tpae.a2014.g03.persistence.dao;

import java.util.List;

import ar.edu.utn.frsf.tpae.a2014.g03.enums.EstadoPedidoEnum;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.HistorialPedido;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Pedido;

/**
 * Interfaz que define las operaciones que debe proveer un DAO de HistorialPedido
 * @author TPAE-2014-g03
 *
 */

public interface HistorialPedidoDAO {
	
	
	/**
	 * Crea un nuevo registro en el historial de pedido
	 * 
	 * @param pedido
	 * @return
	 */
	HistorialPedido persistir(HistorialPedido entity);

	
	/**
	 * Obtiene todos los pedidos en curso realizados por un cliente,utilizando el
	 * idCliente como criterio de busqueda
	 * 
	 * @param idCliente
	 * @return
	 */
	List<Pedido> findPedidosEnCurso(Integer idCliente);
	
	/**
	 * Obtiene todos los pedidos finalizados realizados por un cliente,utilizando el
	 * idCliente como criterio de busqueda
	 * 
	 * @param idCliente
	 * @return
	 */
	List<Pedido> findPedidosFinalizados(Integer idCliente);

	/**
	 * Obtiene pedidos,utilizando el idEstado como criterio de busqueda 
	 * @return
	 */
	List<Pedido> findPedidosByEstado(EstadoPedidoEnum estado);
	
	/**
	 * Obtiene el historial de un pedido
	 * @param idPedido
	 * @return
	 */
	List<HistorialPedido> findHistorialByPedido(Integer idPedido);
	
	
	/**
	 * Obtiene los pedido asignados a un trasportista,utilizando el idtransportista como criterio de busqueda
	 * @param idTransportista
	 * @return
	 */
	List<Pedido> findPedidosAsignados(Integer idTransportista);

	/**
	 * Elimina todos los pedidos
	 */
	void deleteAll();

	
}
